C语言学习[有关排序]讨论(编程爱好请进)

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:32:36
假设这里有20个数字(整型),该如何实现她的字典排序呢?(象1~20为1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9)是要把每个整型数字先转成字符串数组吗?还是要用多个IF句限定输出啊?

/*本程序由WIN-TC编写*/
/*********转成二维数组比较好~不一定要字符串,当然字符串也可以***/
/* 从键盘输入20个字符串,按照字典顺序将其排序输出 二维字符数组**/
/***************************************************************/
#include "stdio.h"
#include "string.h"
main()
{
char a[20][20],b[20]; /*a设为二维数组,储存字符串*/
int i,j;
printf("Input 20 strings:\n");
for(i=0;i<20;i++)
gets(a[i]); /*输入字符串*/
for(i=0;i<20;i++)
for(j=i+1;j<20;j++)
if(strcmp(a[i],a[j])>0) /*字符串比较函数strcmp[1],a[i]>a[j]则交换*/
{
strcpy(b,a[j]); /*strcpy[2]函数赋值函数*/
strcpy(a[j],a[i]); /*使用临时数组b储存字符串*/
strcpy(a[i],b);
}
printf("\nResult:\n");
for(i=0;i<20;i++)
puts(a[i]);
getch();
}
/*^1:string.h中的比较函数,当前者大于后者输出正数,相反为负数,相等返回0*/
/*^2:string.h中的复制函数,将后者字符串取出赋予前者*/
/*数组a第一维改小时也可运行,不过结束时将提示CPU出错*/